TVTest の Discord Rich Presence プラグインを fork した
Fork した TvTestRPC はこちら
原因としては TVTest が番組切り替わりのイベントを提供しておらず、更新が走らないことが要因でした
結局プラグイン側でタイマー処理を回すことで対処しました
それと放送局ロゴを追加したかったので、Fork して独立することにしました
というのも Discord Rich Presence はアプリケーション ID ごとに予め使用するロゴ画像をアップロードする必要があるからです
この fork では新しいアプリケーション ID に切り替えています。
https://scrapbox.io/files/6262c0eb017341001d911d72.png
将来的にはもっといろいろな局に対応したいのですが、地方局を調べるのは大変なので Issue からロゴ追加リクエストを随時受け付けています お気軽にどうぞ (というか報告おねがいします!)
全国共通の NHK 総合と教育、BS はすべてロゴを追加済です
関東広域や一部の地方局の地上波も既に対応済です
まとめ
機能は本家さんバージョンのものを引き継いでいますが、以下の相違点があります
TvtPlay プラグインと連携し, ファイル再生時にも経過時間を表示できるようになっています
シーク位置を加味して経過時間を計算しています
東京近辺の地上波だけでなく、NHK や BS, 様々な地域の地上波のロゴ表示にも対応しています
視聴中の番組が終了したときに Presence が更新されないバグを修正しました
全角文字を半角に変換するオプションを追加しています
サブチャンネル (TOKYO MX2 等) でも Presence を表示できます
https://scrapbox.io/files/6262c0cda71d6e001f2a27fc.png
https://scrapbox.io/files/6262c0d85c03b9001de2d892.png
Details = サービス名
State = 番組名
Large Image Text = 番組説明 (空欄のときは表示されません)
Small Image Text = TVTest と TvTestRPC プラグインのバージョン
ところで C++ は普段あまり書かないので, 文字列操作にかなり詰まりました。
TVTest の API が提供する文字列は wchar_t* ですが, Discord RPC が受け付ける文字列は const char* なので相互変換とかフォーマットがしんどかったです